local devicons = require 'nvim-web-devicons'
devicons.set_icon {
  zsh = {
    icon = '',
    color = '#428850',
    cterm_color = '65',
    name = 'Zsh',
  },
  toml = {
    icon = '',
    color = '#428850',
    cterm_color = '65',
    name = 'Zsh',
  },
}

-- https://www.jb51.net/diannaojichu/310338.html
-- ₳ ₲ ₪ ₵ ₢ ₡ ₦ ₩ ₠ ₧ ₭ ¹²³ ☮ ▶ ☢
-- ♫ ♬ ♪ ♩ ♭ ♪ ♯ ♩ ♪ ♫ ♬ ♭ ♮
-- ℍ ℕ ℙ ℚ ℝ ℤ ℬ ℰℯ ℱℊ ℋ ℎ ℐ ℒ ℓℳ ℴ ℘ ℛ ℭ
-- ◖ ◗ ⊗ ◉ ○ ◌ ◍ ◎ ● ⊙ ◘ ◙ ◍
-- □ ■ □ ■  ○ ● ◎ ◇ ◆ § ❀  ✲ ▣ ※ ◘ ◙ △ ▽ ◄ ► ◀ ▶ ▲ ▼ ◈ ❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿
-- ℂ ℍ ℕ ℙ ℚ ℝ ℤ ℬ ℰ ℯ ℱ ℊ ℋ ℎ ℐ ℒ ℓ ℳ ℴ ℘ ℛ ℭ ℮ ℌ ℑ ℜ ℨ
-- ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⓿ ❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿ ⓫ ⓬ ➀ ➁ ➂ ➃ ➄ ➅ ➆ ➇ ➈ ➉
--  ,  ,  ,  ,  ,
-- https://cn.piliapp.com/symbol/
-- 𝓐 𝓑 𝓒 𝓓 𝓔 𝓕 𝓖 𝓗 𝓘 𝓙 𝓚 𝓛 𝓜 𝓝 𝓞 𝓟 𝓠 𝓡 𝓢 𝓣 𝓤 𝓥 𝓦 𝓧 𝓨 𝓩
-- 𝓪 𝓫 𝓬 𝓭 𝓮 𝓯 𝓰 𝓱 𝓲 𝓳 𝓴 𝓵 𝓶 𝓷 𝓸 𝓹 𝓺 𝓻 𝓼 𝓽 𝓾 𝓿 𝔀 𝔁 𝔂 𝔃
-- 𝒜 ℬ 𝒞 𝒟 ℰ ℱ 𝒢 ℋ ℐ 𝒥 𝒦 ℒ ℳ 𝒩 𝒪 𝒫 𝒬 ℛ 𝒮 𝒯 𝒰 𝒱 𝒲 𝒳 𝒴 𝒵
-- 𝒶 𝒷 𝒸 𝒹 𝑒 𝒻 𝑔 𝒽 𝒾 𝒿 𝓀 𝓁 𝓂 𝓃 𝑜 𝓅 𝓆 𝓇 𝓈 𝓉 𝓊 𝓋 𝓌 𝓍 𝓎 𝓏
-- 𝔸 𝔹 ℂ 𝔻 𝔼 𝔽 𝔾 ℍ 𝕀 𝕁 𝕂 𝕃 𝕄 ℕ 𝕆 ℙ ℚ ℝ 𝕊 𝕋 𝕌 𝕍 𝕎 𝕏 𝕐 ℤ
-- 𝕒 𝕓 𝕔 𝕕 𝕖 𝕗 𝕘 𝕙 𝕚 𝕛 𝕜 𝕝 𝕞 𝕟 𝕠 𝕡 𝕢 𝕣 𝕤 𝕥 𝕦 𝕧 𝕨 𝕩 𝕪 𝕫
-- 🅐 🅑 🅒 🅓 🅔 🅕 🅖 🅗 🅘 🅙 🅚 🅛 🅜 🅝 🅞 🅟 🅠 🅡 🅢 🅣 🅤 🅥 🅦 🅧 🅨 🅩
-- Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ ⒿⓀ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ~
-- 𝘈 𝘉 𝘊 𝘋 𝘌 𝘍 𝘎 𝘏 𝘐 𝘑 𝘒 𝘓 𝘔 𝘕 𝘖 𝘗 𝘘 𝘙 𝘚 𝘛 𝘜 𝘝 𝘞 𝘟 𝘠 𝘡
-- 𝘢 𝘣 𝘤 𝘥 𝘦 𝘧 𝘨 𝘩 𝘪 𝘫 𝘬 𝘭 𝘮 𝘯 𝘰 𝘱 𝘲 𝘳 𝘴 𝘵 𝘶 𝘷 𝘸 𝘹 𝘺 𝘻
-- 𝘼 𝘽 𝘾 𝘿 𝙀 𝙁 𝙂 𝙃 𝙄 𝙅 𝙆 𝙇 𝙈 𝙉 𝙊 𝙋 𝙌 𝙍 𝙎 𝙏 𝙐 𝙑 𝙒 𝙓 𝙔 𝙕
-- 𝙖 𝙗 𝙘 𝙙 𝙚 𝙛 𝙜 𝙝 𝙞 𝙟 𝙠 𝙡 𝙢 𝙣 𝙤 𝙥 𝙦 𝙧 𝙨 𝙩 𝙪 𝙫 𝙬 𝙭 𝙮 𝙯
-- 𝝅 ⩕ ⩓
-- UTF-8 杂项符号
-- https://www.w3school.com.cn/charsets/ref_utf_symbols.asp

vim.fn.sign_define {
  {
    name = 'DiagnosticSignError',
    text = ' 𝙀',
    texthl = 'DiagnosticSignError',
    linehl = 'ErrorLine',
  },
  {
    name = 'DiagnosticSignWarn',
    text = ' 𝙈',
    texthl = 'DiagnosticSignWarn',
    linehl = 'WarningLine',
  },
  {
    name = 'DiagnosticSignInfo',
    text = ' •',
    texthl = 'DiagnosticSignInfo',
    linehl = 'InfoLine',
  },
  {
    name = 'DiagnosticSignHint',
    text = ' ◦',
    texthl = 'DiagnosticSignHint',
    linehl = 'HintLine',
  },
}

KINDS = {}
-- cmd kinds icon
KINDS.cmp_kinds = {
  Text = '𝓽 ',
  Method = '✱ ',
  Function = '𝓕 ',
  Constructor = '⌘ ',
  Field = 'ℱ ',
  Variable = '✾ ',
  Class = 'ℰ ',
  Interface = 'ℐ ',
  Module = 'ℳ ',
  Property = '𝓹 ',
  Unit = '𝓾 ',
  Value = '𝓿 ',
  Enum = 'ℰ ',
  Keyword = 'ℒ ',
  Snippet = 'ℱ ',
  Color = '𝓬 ',
  File = '𝓕 ',
  Reference = '𝓻 ',
  Folder = '𝓕 ',
  EnumMember = 'ℯ ',
  Constant = '𝓰 ',
  Struct = 'ℰ ',
  Event = '𝓮 ',
  Operator = '𝓸 ',
  TypeParameter = '◘ ',
}

KINDS.lspsaga = {
  Folder = { '' },
  File = { '' },
  Module = { '' },
  Namespace = { '' },
  Package = { '' },
  Class = { '' },
  Method = { '' },
  Property = { '' },
  Field = { '' },
  Constructor = { '' },
  Enum = { '' },
  Interface = { '' },
  Function = { '' },
  Variable = { '' },
  Constant = { '' },
  String = { '' },
  Number = { '' },
  Boolean = { '' },
  Array = { '' },
  Object = { '' },
  Key = { '' },
  Null = { '' },
  EnumMember = { '' },
  Struct = { '' },
  Event = { '' },
  Operator = { '' },
  TypeParameter = { '' },
  TypeAlias = { '' },
  Parameter = { '' },
  StaticMethod = { '' },
  Text = { '' },
  Snippet = { '' },
  Unit = { '' },
  Value = { '' },
}

KINDS.tree = {
  glyphs = {
    default = '›',
    symlink = '~',
    git = {
      unstaged = '¹',
      staged = '✓',
      unmerged = '⌥',
      renamed = '₪',
      untracked = '✱',
      deleted = '-',
      ignored = '·',
    },
    folder = {
      arrow_closed = ' ',
      arrow_open = ' ',
      default = '▶',
      open = '▼',
      empty = '▷',
      empty_open = '▽',
      symlink = '~',
      symlink_open = '~',
    },
  },
  indent_markers = {
    enable = true,
    icons = {
      corner = '└ ',
      edge = '│ ',
      none = '  ',
    },
  },
}

KINDS.gitsigns = {
  add = {
    hl = 'GitSignsAdd',
    text = '│',
    numhl = 'GitSignsAddNr',
    linehl = 'GitSignsAddLn',
  },
  change = {
    hl = 'GitSignsChange',
    text = '│',
    numhl = 'GitSignsChangeNr',
    linehl = 'GitSignsChangeLn',
  },
  delete = {
    hl = 'GitSignsDelete',
    text = '_',
    numhl = 'GitSignsDeleteNr',
    linehl = 'GitSignsDeleteLn',
  },
  topdelete = {
    hl = 'GitSignsDelete',
    text = '‾',
    numhl = 'GitSignsDeleteNr',
    linehl = 'GitSignsDeleteLn',
  },
  changedelete = {
    hl = 'GitSignsChange',
    text = '~',
    numhl = 'GitSignsChangeNr',
    linehl = 'GitSignsChangeLn',
  },
}

return KINDS
